
 inline
 log_exp::log_exp()
 {
   
 }
 
 inline
 mat
 log_exp::log_matrix(const mat& M)
 {
   eig_sym(D, V, M);
   mat log_M = V*diagmat( log(D) )*V.t();
   //D.t().print("D");
   //V.print("V");
   return log_M;
 }
 
 
 inline
 mat
 log_exp::exp_matrix(const mat& M)
 {
   eig_sym(D, V, M);
   mat exp_M = V*diagmat( exp(D) )*V.t();
   return exp_M;
 }
 
 
 inline
 mat
 log_exp::sqrt_matrix(const mat& M)
 {
   eig_sym(D, V, M);
   mat sqroot_M = V*diagmat( sqrt(D) )*inv(V);
   return sqroot_M;
 }
 
